package com.cmii.sjw.department.control.jsc.controller;

import cn.dev33.satoken.annotation.SaCheckPermission;
import com.cmii.sjw.department.control.jsc.service.OneFormService;
import com.cmii.sjw.department.control.jsc.util.Result;
import com.cmii.sjw.department.control.jsc.vo.DistrictKpiDTO;
import com.cmii.sjw.department.control.jsc.vo.DistrictKpiVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 部门驾驶舱一表通
 *
 * @Author jfh
 * @Date 2025-02-25 周二 10:25
 * @Version 1.0
 */
@Slf4j
@RestController
@CrossOrigin
@RequestMapping("/OneForm")
public class OneFormController {

    @Autowired
    private OneFormService yibiaoTongService;

    /**
     * 获取token
     *
     * @return
     */
//    @SaCheckPermission("user.sjwadmin")
    @PostMapping("/token")
    public String TokenManager() {
        return yibiaoTongService.TokenManager();
    }

    /**
     * 获取区县列表
     *
     * @param year
     * @return
     */
    @PostMapping("/countyList")
    public Result countyList(String year) {
        return yibiaoTongService.countyList(year);
    }


    /**
     * 获取高校列表
     *
     * @param year
     * @return
     */
    @PostMapping("/highList")
    public Result highList(String year) {
        return yibiaoTongService.highList(year);
    }

    /**
     * 获取学校列表
     *
     * @param year       年份
     * @param schoolType 学校类型
     * @param search     名称搜索
     * @param county     区县
     * @param pageNum    页码
     * @param pageSize   页长
     * @return
     */
    @PostMapping("/schoolList")
    public Result schoolList(String year, String schoolType, String search, String county, int pageNum, int pageSize) {
        return yibiaoTongService.schoolList(year, schoolType, search, county, pageNum, pageSize);
    }


    /**
     * 获取专任教师数量
     *
     * @param year   年份
     * @param county 区县
     * @return
     */
    @PostMapping("/masterData")
    public Result masterData(String year, String county) {
        return yibiaoTongService.masterData(year, county);
    }



    /**
     * 获取专任教师数量详情
     *
     * @param year   年份
     * @param county 区县
     * @param type   分类
     * @return
     */
    @PostMapping("/masterDetail")
    public Result masterDetail(String year, String county, @RequestParam(defaultValue = "1") int type) {
        return yibiaoTongService.masterDetail(year, county, type);
    }

    /**
     * 获取任教师学历情况
     *
     * @param year   年份
     * @param county 区县
     * @param type   分类
     * @return
     */
    @PostMapping("/qualification")
    public Result qualification(String year, String county, @RequestParam(defaultValue = "汇总") String type) {
        return yibiaoTongService.qualification(year, county, type);
    }

    /**
     * 获取任教师学历情况详情
     *
     * @param year       年份
     * @param county     区县/高校
     * @param type       分类
     * @param schoolType 办学类型分类
     * @return
     */
    @PostMapping("/qualificationDetail")
    public Result qualificationDetail(String year, String county,
                                      @RequestParam(defaultValue = "1") int type,
                                      @RequestParam(defaultValue = "幼儿园") String schoolType) {
        return yibiaoTongService.qualificationDetail(year, county, type, schoolType);
    }


    /**
     * 获取专任教师年龄情况
     *
     * @param year   年份
     * @param county 区县
     * @param type   分类 1=区县 2=高校 3=中职
     * @return
     */
    @PostMapping("/age")
    public Result age(String year, String county, @RequestParam(defaultValue = "1") String type) {
        return yibiaoTongService.age(year, county, type);
    }


    /**
     * 获取专任教师职称情况
     *
     * @param year   年份
     * @param county 区县
     * @param type   分类
     * @return
     */
    @PostMapping("/title")
    public Result title(String year, String county, @RequestParam(defaultValue = "1") String type) {
        return yibiaoTongService.title(year, county, type);
    }

    /**
     * 获取专任教师性别比例
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/gender")
    public Result gender(String year, String type, String name) {
        return yibiaoTongService.gender(year, type, name);
    }

    /**
     * 获取专任教师性别比例详情
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/genderDetail")
    public Result genderDetail(String year, String type, String name) {
        return yibiaoTongService.genderDetail(year, type, name);
    }

    /**
     * 获取专任教师城乡分布情况
     *
     * @param year   年份
     * @param county 区县
     * @param type   分类
     * @return 结果对象
     */
    @PostMapping("/country")
    public Result country(String year, String county, String type) {
        return yibiaoTongService.country(year, county, type);
    }

    /**
     * 专任教师城乡分布情况详情
     *
     * @param year   年份
     * @param county 区县
     * @return 结果对象
     */
    @PostMapping("/countryDetail")
    public Result countryDetail(String year, String county, @RequestParam(defaultValue = "汇总") String type) {
        return yibiaoTongService.countryDetail(year, county, type);
    }

    /**
     * 高校辅导员教师数量
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/instructor")
    public Result instructor(String year) {
        return yibiaoTongService.instructor(year);
    }

    /**
     * 高校辅导员教师数量详情
     *
     * @param year       年份
     * @param schoolName 高校名称
     * @return
     */
    @PostMapping("/instructorDetail")
    public Result instructorDetail(String year, String schoolName) {
        return yibiaoTongService.instructorDetail(year, schoolName);
    }

    /**
     * 专职思政课教师数量
     *
     * @param year 年份
     * @param type 类型
     * @param name 名称
     * @return
     */
    @PostMapping("/courses")
    public Result courses(String year, String type, String name) {
        return yibiaoTongService.courses(year, type, name);
    }

    /**
     * 专职思政课教师数量详情
     *
     * @param year 年份
     * @param type 分类
     * @return
     */
    @PostMapping("/coursesDetail")
    public Result coursesDetail(String year, @RequestParam(defaultValue = "1") int type, String name) {
        return yibiaoTongService.coursesDetail(year, type, name);
    }

    /**
     * 心理健康教师数量
     *
     * @param year 年份
     * @param type 类型
     * @param name 名称
     * @return
     */
    @PostMapping("/psychology")
    public Result psychology(String year, String type, String name) {
        return yibiaoTongService.psychology(year, type, name);
    }

    /**
     * 心理健康教师数量详情
     *
     * @param year 年份
     * @param type 分类
     * @param name 名称
     * @return
     */
    @PostMapping("/psychologyDetail")
    public Result psychologyDetail(String year, @RequestParam(defaultValue = "1") int type, String name) {
        return yibiaoTongService.psychologyDetail(year, type, name);
    }

    /**
     * 各区县学校数量（包含高校）
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/schoolNum")
    public Result schoolNum(String year) {
        return yibiaoTongService.schoolNum(year);
    }

    /**
     * 查询教师
     *
     * @param year          年份
     * @param orgnazitionNo 学校类型
     * @param pageNum       页码
     * @param pageSize      页长
     * @return
     */
    @PostMapping("/teacherList")
    public Result teacherList(String year, String orgnazitionNo, int pageNum, int pageSize) {
        return yibiaoTongService.teacherList(year, orgnazitionNo, pageNum, pageSize);
    }

    /**
     * 年度新入职教师
     *
     * @param year 年份
     * @param type 类型
     * @param name 名称
     * @return
     */
    @PostMapping("/induction")
    public Result induction(String year, String type, String name) {
        return yibiaoTongService.induction(year, type, name);
    }

    /**
     * 年度新入职教师详情
     *
     * @param year 年份
     * @param type 类型 1 区县 2 高校
     * @param name 名称
     * @return
     */
    @PostMapping("/inductionDetail")
    public Result inductionDetail(String year, int type, String name) {
        return yibiaoTongService.inductionDetail(year, type, name);
    }

    /**
     * 职业院校双师型教师
     *
     * @param year 年份
     * @param type 类型
     * @param name 名称
     * @return
     */
    @PostMapping("/twoProfession")
    public Result twoProfession(String year, String type, String name) {
        return yibiaoTongService.twoProfession(year, type, name);
    }

    /**
     * 职业院校双师型教师详情
     *
     * @param year 年份
     * @param type 类型 1 区县 2 高校
     * @param name 名称
     * @return
     */
    @PostMapping("/twoProfessionDetail")
    public Result twoProfessionDetail(String year, int type, String name) {
        return yibiaoTongService.twoProfessionDetail(year, type, name);
    }

    /**
     * 艺体类教师
     *
     * @param year 年份
     * @param type 类型
     * @param name 名称
     * @return
     */
    @PostMapping("/artistic")
    public Result artistic(String year, String type, String name) {
        return yibiaoTongService.artistic(year, type, name);
    }

    /**
     * 艺体类教师详情
     *
     * @param year 年份
     * @param type 类型
     * @param name 名称
     * @return
     */
    @PostMapping("/artisticDetail")
    public Result artisticDetail(String year, String type, String name) {
        return yibiaoTongService.artisticDetail(year, type, name);
    }

    /**
     * 普通本科高校专任教师博士占比
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/doctor")
    public Result doctor(String year) {
        return yibiaoTongService.doctor(year);
    }

    /**
     * 普通本科高校专任教师博士占比详情
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/doctorDetail")
    public Result doctorDetail(String year) {
        return yibiaoTongService.doctorDetail(year);
    }

    /**
     * 年度培训教师数量
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/training")
    public Result training(String year, String type, String name) {
        return yibiaoTongService.training(year, type, name);
    }

    /**
     * 年度培训教师数量详情
     *
     * @param year 年份
     * @param type 类型 1 区县 2 高校
     * @param name 名称
     * @return
     */
    @PostMapping("/trainingDetail")
    public Result trainingDetail(String year, int type, String name) {
        return yibiaoTongService.trainingDetail(year, type, name);
    }

    /**
     * 学校详情（类型不同，返回数据有所不同）
     *
     * @param year          年份
     * @param orgnazitionNo 学校代码
     * @return
     */
    @PostMapping("/schoolDetail")
    public Result schoolDetail(String year, String orgnazitionNo) {
        return yibiaoTongService.schoolDetail(year, orgnazitionNo);
    }

    /**
     * 市级kpi获取
     *
     * @param year 年份
     * @return
     */
    @PostMapping("/kpiCity")
    public Result kpiCity(String year, String type, String name) {
        return yibiaoTongService.kpiCity(year,type,name);
    }

    /**
     * 各个区县绩效指标
     *
     * @return 首页展示
     */
    @PostMapping("/kpi")
    public Result kpi() {
        List<DistrictKpiDTO> result = yibiaoTongService.kpi();
        return Result.success(result);
    }
}
